class Fibonacci(object):
    """斐波那契数列迭代器"""

    def __init__(self, n):
        """
        n:指生成数列的个数
        """
        self.n = n
        # 保存当前生成到的数据列的第几个数据，生成器中性质，记录位置，下一个位置的数据
        self.now = 0
        # 两个初始值
        self.a = 0
        self.b = 1

    def __next__(self):
        """当使用next()函数调用时，就会获取下一个数"""
        if self.now < self.n:
            self.a= self.b
            self.b=self.a+self.b
            self.now += 1
            return self.a
        else:
            raise StopIteration


    def __iter__(self):
        """迭代器的__iter__ 返回自身即可"""
        return self


if __name__ == '__main__':
    fib = Fibonacci(5)
    for num in fib:
        print(num)

